home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Interfaces&Libraries / Universal / Interfaces / PInterfaces / Menus.p < prev    next >
Encoding:
Text File  |  1998-08-17  |  26.7 KB  |  703 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        Menus.p
  3.  
  4.      Contains:    Menu Manager Interfaces.
  5.  
  6.      Version:    Technology:    Mac OS 8.5
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1985-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. }
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT Menus;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __MENUS__}
  27. {$SETC __MENUS__ := 1}
  28.  
  29. {$I+}
  30. {$SETC MenusIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33. {$IFC UNDEFINED __APPLEEVENTS__}
  34. {$I AppleEvents.p}
  35. {$ENDC}
  36. {$IFC UNDEFINED __CONDITIONALMACROS__}
  37. {$I ConditionalMacros.p}
  38. {$ENDC}
  39. {$IFC UNDEFINED __EVENTS__}
  40. {$I Events.p}
  41. {$ENDC}
  42. {$IFC UNDEFINED __PROCESSES__}
  43. {$I Processes.p}
  44. {$ENDC}
  45. {$IFC UNDEFINED __TEXTCOMMON__}
  46. {$I TextCommon.p}
  47. {$ENDC}
  48. {$IFC UNDEFINED __MACTYPES__}
  49. {$I MacTypes.p}
  50. {$ENDC}
  51. {$IFC UNDEFINED __QUICKDRAW__}
  52. {$I Quickdraw.p}
  53. {$ENDC}
  54.  
  55.  
  56. {$PUSH}
  57. {$ALIGN MAC68K}
  58. {$LibExport+}
  59.  
  60. {——————————————————————————————————————————————————————————————————————————————————————}
  61. {    • Gestalt and Errors (Mac OS 8.5 and later)                                            }
  62. {——————————————————————————————————————————————————————————————————————————————————————}
  63.  
  64. CONST
  65.     gestaltMenuMgrAttr            = 'menu';                        {  If this Gestalt exists, the Mac OS 8.5 Menu Manager is installed }
  66.     gestaltMenuMgrPresent        = 1;
  67.  
  68.     menuPropertyInvalid            = -5603;
  69.     menuPropertyNotFoundErr        = -5604;
  70.  
  71.  
  72. {——————————————————————————————————————————————————————————————————————————————————————}
  73. {    • Menu Constants                                                                     }
  74. {——————————————————————————————————————————————————————————————————————————————————————}
  75.     noMark                        = 0;                            { mark symbol for MarkItem }
  76.  
  77.                                                                 {  menu defProc messages  }
  78.     kMenuDrawMsg                = 0;
  79.     kMenuChooseMsg                = 1;
  80.     kMenuSizeMsg                = 2;
  81.     kMenuDrawItemMsg            = 4;
  82.     kMenuCalcItemMsg            = 5;
  83.     kMenuThemeSavvyMsg            = 7;                            {  is your MDEF theme-savvy?  If so, return hex 7473 in the whichItem parameter }
  84.     mDrawMsg                    = 0;
  85.     mChooseMsg                    = 1;
  86.     mSizeMsg                    = 2;
  87.     mDrawItemMsg                = 4;
  88.     mCalcItemMsg                = 5;
  89.  
  90.     kThemeSavvyMenuResponse        = $7473;
  91.  
  92.     textMenuProc                = 0;
  93.     hMenuCmd                    = 27;                            { itemCmd == 0x001B ==> hierarchical menu }
  94.     hierMenu                    = -1;                            { a hierarchical menu - for InsertMenu call }
  95.     mPopUpMsg                    = 3;                            { menu defProc messages - place yourself }
  96.     mctAllItems                    = -98;                            { search for all Items for the given ID }
  97.     mctLastIDIndic                = -99;                            { last color table entry has this in ID field }
  98.  
  99. {  Constants for use with MacOS 8.0 (Appearance 1.0) and later }
  100.     kMenuStdMenuProc            = 63;
  101.     kMenuStdMenuBarProc            = 63;
  102.  
  103.     kMenuNoModifiers            = 0;                            {  Mask for no modifiers }
  104.     kMenuShiftModifier            = $01;                            {  Mask for shift key modifier }
  105.     kMenuOptionModifier            = $02;                            {  Mask for option key modifier }
  106.     kMenuControlModifier        = $04;                            {  Mask for control key modifier }
  107.     kMenuNoCommandModifier        = $08;                            {  Mask for no command key modifier }
  108.  
  109.     kMenuNoIcon                    = 0;                            {  No icon }
  110.     kMenuIconType                = 1;                            {  Type for ICON }
  111.     kMenuShrinkIconType            = 2;                            {  Type for ICON plotted 16 x 16 }
  112.     kMenuSmallIconType            = 3;                            {  Type for SICN }
  113.     kMenuColorIconType            = 4;                            {  Type for cicn }
  114.     kMenuIconSuiteType            = 5;                            {  Type for Icon Suite }
  115.     kMenuIconRefType            = 6;                            {  Type for Icon Ref }
  116.  
  117.  
  118.  
  119. {——————————————————————————————————————————————————————————————————————————————————————}
  120. {    • Menu Structures                                                                     }
  121. {——————————————————————————————————————————————————————————————————————————————————————}
  122.  
  123. TYPE
  124.     MenuInfoPtr = ^MenuInfo;
  125.     MenuInfo = RECORD
  126.         menuID:                    INTEGER;
  127.         menuWidth:                INTEGER;
  128.         menuHeight:                INTEGER;
  129.         menuProc:                Handle;
  130.         enableFlags:            LONGINT;
  131.         menuData:                Str255;
  132.     END;
  133.  
  134.     MenuPtr                                = ^MenuInfo;
  135.     MenuHandle                            = ^MenuPtr;
  136. {  MenuRef is obsolete.  Use MenuHandle.  Or don’t.  It’s all the same to us.  We’re here to serve. }
  137.     MenuRef                                = MenuHandle;
  138.     MCEntryPtr = ^MCEntry;
  139.     MCEntry = RECORD
  140.         mctID:                    INTEGER;                                { menu ID.  ID = 0 is the menu bar }
  141.         mctItem:                INTEGER;                                { menu Item. Item = 0 is a title }
  142.         mctRGB1:                RGBColor;                                { usage depends on ID and Item }
  143.         mctRGB2:                RGBColor;                                { usage depends on ID and Item }
  144.         mctRGB3:                RGBColor;                                { usage depends on ID and Item }
  145.         mctRGB4:                RGBColor;                                { usage depends on ID and Item }
  146.         mctReserved:            INTEGER;                                { reserved for internal use }
  147.     END;
  148.  
  149.     MCTable                                = ARRAY [0..0] OF MCEntry;
  150.     MCTablePtr                            = ^MCTable;
  151.     MCTableHandle                        = ^MCTablePtr;
  152.     MenuCRsrcPtr = ^MenuCRsrc;
  153.     MenuCRsrc = RECORD
  154.         numEntries:                INTEGER;                                { number of entries }
  155.         mcEntryRecs:            MCTable;                                { ARRAY [1..numEntries] of MCEntry }
  156.     END;
  157.  
  158.     MenuCRsrcHandle                        = ^MenuCRsrcPtr;
  159. {$IFC TARGET_OS_WIN32 }
  160. { QuickTime 3.0 }
  161.     MenuAccessKeyRecPtr = ^MenuAccessKeyRec;
  162.     MenuAccessKeyRec = RECORD
  163.         count:                    INTEGER;
  164.         flags:                    LONGINT;
  165.         keys:                    SInt8;
  166.     END;
  167.  
  168.     MenuAccessKeyPtr                    = ^MenuAccessKeyRec;
  169.     MenuAccessKeyHandle                    = ^MenuAccessKeyPtr;
  170. PROCEDURE SetMenuItemHotKey(menu: MenuHandle; itemID: INTEGER; hotKey: ByteParameter; flags: LONGINT); C;
  171. {$ENDC}  {TARGET_OS_WIN32}
  172.  
  173. {——————————————————————————————————————————————————————————————————————————————————————}
  174. {    • Menu ProcPtrs                                                                     }
  175. {                                                                                        }
  176. {    All of these procs are considered deprecated.  Developers interested in portability    }
  177. {    to Carbon should avoid them entirely, if at all possible.                            }
  178. {——————————————————————————————————————————————————————————————————————————————————————}
  179.  
  180. TYPE
  181. {$IFC TYPED_FUNCTION_POINTERS}
  182.     MenuDefProcPtr = PROCEDURE(message: INTEGER; theMenu: MenuHandle; VAR menuRect: Rect; hitPt: Point; VAR whichItem: INTEGER);
  183. {$ELSEC}
  184.     MenuDefProcPtr = ProcPtr;
  185. {$ENDC}
  186.  
  187. {$IFC TYPED_FUNCTION_POINTERS}
  188.     MenuBarDefProcPtr = FUNCTION(selector: INTEGER; message: INTEGER; parameter1: INTEGER; parameter2: LONGINT): LONGINT;
  189. {$ELSEC}
  190.     MenuBarDefProcPtr = ProcPtr;
  191. {$ENDC}
  192.  
  193. {$IFC TYPED_FUNCTION_POINTERS}
  194.     MenuHookProcPtr = PROCEDURE;
  195. {$ELSEC}
  196.     MenuHookProcPtr = ProcPtr;
  197. {$ENDC}
  198.  
  199. {$IFC TYPED_FUNCTION_POINTERS}
  200.     MBarHookProcPtr = FUNCTION(VAR menuRect: Rect): INTEGER;
  201. {$ELSEC}
  202.     MBarHookProcPtr = Register68kProcPtr;
  203. {$ENDC}
  204.  
  205.     MenuDefUPP = UniversalProcPtr;
  206.     MenuBarDefUPP = UniversalProcPtr;
  207.     MenuHookUPP = UniversalProcPtr;
  208.     MBarHookUPP = UniversalProcPtr;
  209.  
  210. CONST
  211.     uppMenuDefProcInfo = $0000FF80;
  212.     uppMenuBarDefProcInfo = $00003AB0;
  213.     uppMenuHookProcInfo = $00000000;
  214.     uppMBarHookProcInfo = $000000CF;
  215.  
  216. FUNCTION NewMenuDefProc(userRoutine: MenuDefProcPtr): MenuDefUPP;
  217.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  218.     INLINE $2E9F;
  219.     {$ENDC}
  220.  
  221. FUNCTION NewMenuBarDefProc(userRoutine: MenuBarDefProcPtr): MenuBarDefUPP;
  222.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  223.     INLINE $2E9F;
  224.     {$ENDC}
  225.  
  226. FUNCTION NewMenuHookProc(userRoutine: MenuHookProcPtr): MenuHookUPP;
  227.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  228.     INLINE $2E9F;
  229.     {$ENDC}
  230.  
  231. FUNCTION NewMBarHookProc(userRoutine: MBarHookProcPtr): MBarHookUPP;
  232.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  233.     INLINE $2E9F;
  234.     {$ENDC}
  235.  
  236. PROCEDURE CallMenuDefProc(message: INTEGER; theMenu: MenuHandle; VAR menuRect: Rect; hitPt: Point; VAR whichItem: INTEGER; userRoutine: MenuDefUPP);
  237.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  238.     INLINE $205F, $4E90;
  239.     {$ENDC}
  240.  
  241. FUNCTION CallMenuBarDefProc(selector: INTEGER; message: INTEGER; parameter1: INTEGER; parameter2: LONGINT; userRoutine: MenuBarDefUPP): LONGINT;
  242.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  243.     INLINE $205F, $4E90;
  244.     {$ENDC}
  245.  
  246. PROCEDURE CallMenuHookProc(userRoutine: MenuHookUPP);
  247.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  248.     INLINE $205F, $4E90;
  249.     {$ENDC}
  250.  
  251. FUNCTION CallMBarHookProc(VAR menuRect: Rect; userRoutine: MBarHookUPP): INTEGER;
  252.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  253.     {To be implemented:  Glue to move parameters into registers.}
  254.     {$ENDC}
  255. {——————————————————————————————————————————————————————————————————————————————————————}
  256. {    • Menu Manager Initialization                                                        }
  257. {——————————————————————————————————————————————————————————————————————————————————————}
  258. PROCEDURE InitProcMenu(resID: INTEGER);
  259.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  260.     INLINE $A808;
  261.     {$ENDC}
  262. PROCEDURE InitMenus;
  263.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  264.     INLINE $A930;
  265.     {$ENDC}
  266. {——————————————————————————————————————————————————————————————————————————————————————}
  267. {    • Menu Manipulation                                                                     }
  268. {——————————————————————————————————————————————————————————————————————————————————————}
  269. FUNCTION NewMenu(menuID: INTEGER; menuTitle: Str255): MenuHandle;
  270.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  271.     INLINE $A931;
  272.     {$ENDC}
  273. FUNCTION GetMenu(resourceID: INTEGER): MenuHandle;
  274.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  275.     INLINE $A9BF;
  276.     {$ENDC}
  277. PROCEDURE DisposeMenu(theMenu: MenuHandle);
  278.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  279.     INLINE $A932;
  280.     {$ENDC}
  281. PROCEDURE CalcMenuSize(theMenu: MenuHandle);
  282.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  283.     INLINE $A948;
  284.     {$ENDC}
  285. FUNCTION CountMItems(theMenu: MenuHandle): INTEGER;
  286.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  287.     INLINE $A950;
  288.     {$ENDC}
  289. {  Routines available in Mac OS 8.5 and later }
  290.  
  291. FUNCTION GetMenuFont(menu: MenuHandle; VAR outFontID: SInt16; VAR outFontSize: UInt16): OSStatus;
  292. FUNCTION SetMenuFont(menu: MenuHandle; inFontID: SInt16; inFontSize: UInt16): OSStatus;
  293. FUNCTION GetMenuExcludesMarkColumn(menu: MenuHandle): BOOLEAN;
  294. FUNCTION SetMenuExcludesMarkColumn(menu: MenuHandle; excludesMark: BOOLEAN): OSStatus;
  295. {——————————————————————————————————————————————————————————————————————————————————————}
  296. {    • Menu Item Insertion                                                                 }
  297. {——————————————————————————————————————————————————————————————————————————————————————}
  298. PROCEDURE AppendMenu(menu: MenuHandle; data: Str255);
  299.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  300.     INLINE $A933;
  301.     {$ENDC}
  302. PROCEDURE InsertResMenu(theMenu: MenuHandle; theType: ResType; afterItem: INTEGER);
  303.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  304.     INLINE $A951;
  305.     {$ENDC}
  306. PROCEDURE AppendResMenu(theMenu: MenuHandle; theType: ResType);
  307.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  308.     INLINE $A94D;
  309.     {$ENDC}
  310. PROCEDURE InsertMenuItem(theMenu: MenuHandle; itemString: Str255; afterItem: INTEGER);
  311.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  312.     INLINE $A826;
  313.     {$ENDC}
  314. PROCEDURE DeleteMenuItem(theMenu: MenuHandle; item: INTEGER);
  315.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  316.     INLINE $A952;
  317.     {$ENDC}
  318. PROCEDURE InsertFontResMenu(theMenu: MenuHandle; afterItem: INTEGER; scriptFilter: INTEGER);
  319.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  320.     INLINE $303C, $0400, $A825;
  321.     {$ENDC}
  322. PROCEDURE InsertIntlResMenu(theMenu: MenuHandle; theType: ResType; afterItem: INTEGER; scriptFilter: INTEGER);
  323.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  324.     INLINE $303C, $0601, $A825;
  325.     {$ENDC}
  326. {  Routines available in Mac OS 8.5 and later }
  327.  
  328. FUNCTION AppendMenuItemText(menu: MenuHandle; inString: Str255): OSStatus;
  329. FUNCTION InsertMenuItemText(menu: MenuHandle; inString: Str255; afterItem: UInt16): OSStatus;
  330. {——————————————————————————————————————————————————————————————————————————————————————}
  331. {    • Menu Events                                                                         }
  332. {——————————————————————————————————————————————————————————————————————————————————————}
  333. FUNCTION MenuKey(ch: CharParameter): LONGINT;
  334.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  335.     INLINE $A93E;
  336.     {$ENDC}
  337. FUNCTION MenuSelect(startPt: Point): LONGINT;
  338.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  339.     INLINE $A93D;
  340.     {$ENDC}
  341. FUNCTION PopUpMenuSelect(menu: MenuHandle; top: INTEGER; left: INTEGER; popUpItem: INTEGER): LONGINT;
  342.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  343.     INLINE $A80B;
  344.     {$ENDC}
  345. FUNCTION MenuChoice: LONGINT;
  346.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  347.     INLINE $AA66;
  348.     {$ENDC}
  349. {  Routines available in Mac OS 8.0 (Appearance 1.0) and later }
  350. FUNCTION MenuEvent({CONST}VAR inEvent: EventRecord): UInt32;
  351.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  352.     INLINE $303C, $020C, $A825;
  353.     {$ENDC}
  354.  
  355. {——————————————————————————————————————————————————————————————————————————————————————}
  356. {    • Menu Bar                                                                               }
  357. {——————————————————————————————————————————————————————————————————————————————————————}
  358. FUNCTION GetMBarHeight: INTEGER;
  359.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  360.     INLINE $3EB8, $0BAA;
  361.     {$ENDC}
  362. PROCEDURE DrawMenuBar;
  363.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  364.     INLINE $A937;
  365.     {$ENDC}
  366. PROCEDURE InvalMenuBar;
  367.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  368.     INLINE $A81D;
  369.     {$ENDC}
  370. PROCEDURE HiliteMenu(menuID: INTEGER);
  371.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  372.     INLINE $A938;
  373.     {$ENDC}
  374. FUNCTION GetNewMBar(menuBarID: INTEGER): Handle;
  375.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  376.     INLINE $A9C0;
  377.     {$ENDC}
  378. FUNCTION GetMenuBar: Handle;
  379.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  380.     INLINE $A93B;
  381.     {$ENDC}
  382. PROCEDURE SetMenuBar(menuList: Handle);
  383.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  384.     INLINE $A93C;
  385.     {$ENDC}
  386. FUNCTION GetMenuHandle(menuID: INTEGER): MenuHandle;
  387.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  388.     INLINE $A949;
  389.     {$ENDC}
  390. PROCEDURE InsertMenu(theMenu: MenuHandle; beforeID: INTEGER);
  391.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  392.     INLINE $A935;
  393.     {$ENDC}
  394. PROCEDURE DeleteMenu(menuID: INTEGER);
  395.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  396.     INLINE $A936;
  397.     {$ENDC}
  398. PROCEDURE ClearMenuBar;
  399.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  400.     INLINE $A934;
  401.     {$ENDC}
  402. PROCEDURE SetMenuFlash(count: INTEGER);
  403.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  404.     INLINE $A94A;
  405.     {$ENDC}
  406. PROCEDURE FlashMenuBar(menuID: INTEGER);
  407.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  408.     INLINE $A94C;
  409.     {$ENDC}
  410. FUNCTION SystemEdit(editCmd: INTEGER): BOOLEAN;
  411.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  412.     INLINE $A9C2;
  413.     {$ENDC}
  414. PROCEDURE SystemMenu(menuResult: LONGINT);
  415.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  416.     INLINE $A9B5;
  417.     {$ENDC}
  418. {  Routines available in Mac OS 8.5 and later }
  419. FUNCTION IsMenuBarVisible: BOOLEAN;
  420. PROCEDURE ShowMenuBar;
  421. PROCEDURE HideMenuBar;
  422.  
  423. {——————————————————————————————————————————————————————————————————————————————————————}
  424. {    • Menu Item Accessors                                                                 }
  425. {——————————————————————————————————————————————————————————————————————————————————————}
  426. PROCEDURE CheckItem(theMenu: MenuHandle; item: INTEGER; checked: BOOLEAN);
  427.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  428.     INLINE $A945;
  429.     {$ENDC}
  430. PROCEDURE SetMenuItemText(theMenu: MenuHandle; item: INTEGER; itemString: Str255);
  431.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  432.     INLINE $A947;
  433.     {$ENDC}
  434. PROCEDURE GetMenuItemText(theMenu: MenuHandle; item: INTEGER; VAR itemString: Str255);
  435.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  436.     INLINE $A946;
  437.     {$ENDC}
  438. PROCEDURE SetItemMark(theMenu: MenuHandle; item: INTEGER; markChar: CharParameter);
  439.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  440.     INLINE $A944;
  441.     {$ENDC}
  442. PROCEDURE GetItemMark(theMenu: MenuHandle; item: INTEGER; VAR markChar: CharParameter);
  443.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  444.     INLINE $A943;
  445.     {$ENDC}
  446. PROCEDURE SetItemCmd(theMenu: MenuHandle; item: INTEGER; cmdChar: CharParameter);
  447.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  448.     INLINE $A84F;
  449.     {$ENDC}
  450. PROCEDURE GetItemCmd(theMenu: MenuHandle; item: INTEGER; VAR cmdChar: CharParameter);
  451.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  452.     INLINE $A84E;
  453.     {$ENDC}
  454. PROCEDURE SetItemIcon(theMenu: MenuHandle; item: INTEGER; iconIndex: INTEGER);
  455.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  456.     INLINE $A940;
  457.     {$ENDC}
  458. PROCEDURE GetItemIcon(theMenu: MenuHandle; item: INTEGER; VAR iconIndex: Byte);
  459.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  460.     INLINE $A93F;
  461.     {$ENDC}
  462. PROCEDURE SetItemStyle(theMenu: MenuHandle; item: INTEGER; chStyle: StyleParameter);
  463.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  464.     INLINE $A942;
  465.     {$ENDC}
  466. PROCEDURE GetItemStyle(theMenu: MenuHandle; item: INTEGER; VAR chStyle: Style);
  467. PROCEDURE DisableItem(theMenu: MenuHandle; item: INTEGER);
  468.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  469.     INLINE $A93A;
  470.     {$ENDC}
  471. PROCEDURE EnableItem(theMenu: MenuHandle; item: INTEGER);
  472.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  473.     INLINE $A939;
  474.     {$ENDC}
  475. {  Routines available in Mac OS 8.0 (Appearance 1.0) and later }
  476.  
  477. FUNCTION SetMenuItemCommandID(inMenu: MenuHandle; inItem: SInt16; inCommandID: UInt32): OSErr;
  478.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  479.     INLINE $303C, $0502, $A825;
  480.     {$ENDC}
  481. FUNCTION GetMenuItemCommandID(inMenu: MenuHandle; inItem: SInt16; VAR outCommandID: UInt32): OSErr;
  482.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  483.     INLINE $303C, $0503, $A825;
  484.     {$ENDC}
  485. FUNCTION SetMenuItemModifiers(inMenu: MenuHandle; inItem: SInt16; inModifiers: ByteParameter): OSErr;
  486.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  487.     INLINE $303C, $0404, $A825;
  488.     {$ENDC}
  489. FUNCTION GetMenuItemModifiers(inMenu: MenuHandle; inItem: SInt16; VAR outModifiers: UInt8): OSErr;
  490.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  491.     INLINE $303C, $0505, $A825;
  492.     {$ENDC}
  493. FUNCTION SetMenuItemIconHandle(inMenu: MenuHandle; inItem: SInt16; inIconType: ByteParameter; inIconHandle: Handle): OSErr;
  494.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  495.     INLINE $303C, $0606, $A825;
  496.     {$ENDC}
  497. FUNCTION GetMenuItemIconHandle(inMenu: MenuHandle; inItem: SInt16; VAR outIconType: UInt8; VAR outIconHandle: Handle): OSErr;
  498.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  499.     INLINE $303C, $0707, $A825;
  500.     {$ENDC}
  501. FUNCTION SetMenuItemTextEncoding(inMenu: MenuHandle; inItem: SInt16; inScriptID: TextEncoding): OSErr;
  502.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  503.     INLINE $303C, $0408, $A825;
  504.     {$ENDC}
  505. FUNCTION GetMenuItemTextEncoding(inMenu: MenuHandle; inItem: SInt16; VAR outScriptID: TextEncoding): OSErr;
  506.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  507.     INLINE $303C, $0509, $A825;
  508.     {$ENDC}
  509. FUNCTION SetMenuItemHierarchicalID(inMenu: MenuHandle; inItem: SInt16; inHierID: SInt16): OSErr;
  510.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  511.     INLINE $303C, $040D, $A825;
  512.     {$ENDC}
  513. FUNCTION GetMenuItemHierarchicalID(inMenu: MenuHandle; inItem: SInt16; VAR outHierID: SInt16): OSErr;
  514.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  515.     INLINE $303C, $050E, $A825;
  516.     {$ENDC}
  517. FUNCTION SetMenuItemFontID(inMenu: MenuHandle; inItem: SInt16; inFontID: SInt16): OSErr;
  518.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  519.     INLINE $303C, $040F, $A825;
  520.     {$ENDC}
  521. FUNCTION GetMenuItemFontID(inMenu: MenuHandle; inItem: SInt16; VAR outFontID: SInt16): OSErr;
  522.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  523.     INLINE $303C, $0510, $A825;
  524.     {$ENDC}
  525. FUNCTION SetMenuItemRefCon(inMenu: MenuHandle; inItem: SInt16; inRefCon: UInt32): OSErr;
  526.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  527.     INLINE $303C, $050A, $A825;
  528.     {$ENDC}
  529. FUNCTION GetMenuItemRefCon(inMenu: MenuHandle; inItem: SInt16; VAR outRefCon: UInt32): OSErr;
  530.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  531.     INLINE $303C, $050B, $A825;
  532.     {$ENDC}
  533. FUNCTION SetMenuItemRefCon2(inMenu: MenuHandle; inItem: SInt16; inRefCon2: UInt32): OSErr;
  534.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  535.     INLINE $303C, $0511, $A825;
  536.     {$ENDC}
  537. FUNCTION GetMenuItemRefCon2(inMenu: MenuHandle; inItem: SInt16; VAR outRefCon2: UInt32): OSErr;
  538.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  539.     INLINE $303C, $0512, $A825;
  540.     {$ENDC}
  541. FUNCTION SetMenuItemKeyGlyph(inMenu: MenuHandle; inItem: SInt16; inGlyph: SInt16): OSErr;
  542.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  543.     INLINE $303C, $0513, $A825;
  544.     {$ENDC}
  545. FUNCTION GetMenuItemKeyGlyph(inMenu: MenuHandle; inItem: SInt16; VAR outGlyph: SInt16): OSErr;
  546.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  547.     INLINE $303C, $0514, $A825;
  548.     {$ENDC}
  549. {  Routines available in Mac OS 8.5 and later (supporting enabling/disabling of > 31 items) }
  550.  
  551. PROCEDURE EnableMenuItem(theMenu: MenuHandle; item: UInt16);
  552. PROCEDURE DisableMenuItem(theMenu: MenuHandle; item: UInt16);
  553. FUNCTION IsMenuItemEnabled(menu: MenuHandle; item: UInt16): BOOLEAN;
  554. PROCEDURE EnableMenuItemIcon(theMenu: MenuHandle; item: UInt16);
  555.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  556.     INLINE $303C, $0019, $A825;
  557.     {$ENDC}
  558. PROCEDURE DisableMenuItemIcon(theMenu: MenuHandle; item: UInt16);
  559.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  560.     INLINE $303C, $0020, $A825;
  561.     {$ENDC}
  562. FUNCTION IsMenuItemIconEnabled(menu: MenuHandle; item: UInt16): BOOLEAN;
  563.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  564.     INLINE $303C, $0018, $A825;
  565.     {$ENDC}
  566.  
  567. {——————————————————————————————————————————————————————————————————————————————————————}
  568. {    • Menu Item Color Tables                                                             }
  569. {                                                                                          }
  570. {    Menu color manipulation is considered deprecated with the advent of the Appearance    }
  571. {    Manager.  Avoid using these routines if possible                                     }
  572. {——————————————————————————————————————————————————————————————————————————————————————}
  573. PROCEDURE DeleteMCEntries(menuID: INTEGER; menuItem: INTEGER);
  574.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  575.     INLINE $AA60;
  576.     {$ENDC}
  577. FUNCTION GetMCInfo: MCTableHandle;
  578.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  579.     INLINE $AA61;
  580.     {$ENDC}
  581. PROCEDURE SetMCInfo(menuCTbl: MCTableHandle);
  582.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  583.     INLINE $AA62;
  584.     {$ENDC}
  585. PROCEDURE DisposeMCInfo(menuCTbl: MCTableHandle);
  586.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  587.     INLINE $AA63;
  588.     {$ENDC}
  589. FUNCTION GetMCEntry(menuID: INTEGER; menuItem: INTEGER): MCEntryPtr;
  590.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  591.     INLINE $AA64;
  592.     {$ENDC}
  593. PROCEDURE SetMCEntries(numEntries: INTEGER; menuCEntries: MCTablePtr);
  594.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  595.     INLINE $AA65;
  596.     {$ENDC}
  597.  
  598.  
  599. {——————————————————————————————————————————————————————————————————————————————————————}
  600. { • Properties     (Mac OS 8.5 and later)                                                    }
  601. {                                                                                        }
  602. { With the following property APIs, you can attach any piece of data you'd like to a    }
  603. { menu or menu item. Passing zero for the item number parameter indicates you'd like    }
  604. { to attach the data to the menu itself, and not to any specific menu item.            }
  605. {——————————————————————————————————————————————————————————————————————————————————————}
  606. FUNCTION GetMenuItemProperty(menu: MenuHandle; item: UInt16; propertyCreator: OSType; propertyTag: OSType; bufferSize: UInt32; VAR actualSize: UInt32; propertyBuffer: UNIV Ptr): OSStatus;
  607. FUNCTION GetMenuItemPropertySize(menu: MenuHandle; item: UInt16; propertyCreator: OSType; propertyTag: OSType; VAR size: UInt32): OSStatus;
  608. FUNCTION SetMenuItemProperty(menu: MenuHandle; item: UInt16; propertyCreator: OSType; propertyTag: OSType; propertySize: UInt32; propertyData: UNIV Ptr): OSStatus;
  609. FUNCTION RemoveMenuItemProperty(menu: MenuHandle; item: UInt16; propertyCreator: OSType; propertyTag: OSType): OSStatus;
  610.  
  611.  
  612. {——————————————————————————————————————————————————————————————————————————————————————}
  613. {    • Contextual Menu routines and constants                                            }
  614. {    available with Conxtextual Menu extension 1.0 and later                                }
  615. {——————————————————————————————————————————————————————————————————————————————————————}
  616. { Gestalt Selector for classic 68K apps only. }
  617. { CFM apps should weak link and check the symbols. }
  618.  
  619. CONST
  620.     gestaltContextualMenuAttr    = 'cmnu';
  621.     gestaltContextualMenuUnusedBit = 0;
  622.     gestaltContextualMenuTrapAvailable = 1;
  623.  
  624. { Values indicating what kind of help the application supports }
  625.     kCMHelpItemNoHelp            = 0;
  626.     kCMHelpItemAppleGuide        = 1;
  627.     kCMHelpItemOtherHelp        = 2;
  628.  
  629. { Values indicating what was chosen from the menu }
  630.     kCMNothingSelected            = 0;
  631.     kCMMenuItemSelected            = 1;
  632.     kCMShowHelpSelected            = 3;
  633.  
  634. FUNCTION InitContextualMenus: OSStatus;
  635.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  636.     INLINE $7001, $AA72;
  637.     {$ENDC}
  638. FUNCTION IsShowContextualMenuClick({CONST}VAR inEvent: EventRecord): BOOLEAN;
  639.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  640.     INLINE $7002, $AA72;
  641.     {$ENDC}
  642. FUNCTION ContextualMenuSelect(inMenu: MenuHandle; inGlobalLocation: Point; inReserved: BOOLEAN; inHelpType: UInt32; inHelpItemString: Str255; {CONST}VAR inSelection: AEDesc; VAR outUserSelectionType: UInt32; VAR outMenuID: SInt16; VAR outMenuItem: UInt16): OSStatus;
  643.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  644.     INLINE $7003, $AA72;
  645.     {$ENDC}
  646. FUNCTION ProcessIsContextualMenuClient(VAR inPSN: ProcessSerialNumber): BOOLEAN;
  647.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  648.     INLINE $7004, $AA72;
  649.     {$ENDC}
  650.  
  651.  
  652.  
  653. {$IFC OLDROUTINENAMES }
  654. PROCEDURE AddResMenu(theMenu: MenuHandle; theType: ResType);
  655.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  656.     INLINE $A94D;
  657.     {$ENDC}
  658. PROCEDURE InsMenuItem(theMenu: MenuHandle; itemString: Str255; afterItem: INTEGER);
  659.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  660.     INLINE $A826;
  661.     {$ENDC}
  662. PROCEDURE DelMenuItem(theMenu: MenuHandle; item: INTEGER);
  663.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  664.     INLINE $A952;
  665.     {$ENDC}
  666. PROCEDURE SetItem(theMenu: MenuHandle; item: INTEGER; itemString: Str255);
  667.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  668.     INLINE $A947;
  669.     {$ENDC}
  670. PROCEDURE GetItem(theMenu: MenuHandle; item: INTEGER; VAR itemString: Str255);
  671.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  672.     INLINE $A946;
  673.     {$ENDC}
  674. FUNCTION GetMHandle(menuID: INTEGER): MenuHandle;
  675.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  676.     INLINE $A949;
  677.     {$ENDC}
  678. PROCEDURE DelMCEntries(menuID: INTEGER; menuItem: INTEGER);
  679.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  680.     INLINE $AA60;
  681.     {$ENDC}
  682. PROCEDURE DispMCInfo(menuCTbl: MCTableHandle);
  683.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  684.     INLINE $AA63;
  685.     {$ENDC}
  686. {$ENDC}  {OLDROUTINENAMES}
  687.  
  688.  
  689.  
  690. {$IFC TARGET_OS_WIN32 }
  691. {$ENDC}  {TARGET_OS_WIN32}
  692.  
  693. {$ALIGN RESET}
  694. {$POP}
  695.  
  696. {$SETC UsingIncludes := MenusIncludes}
  697.  
  698. {$ENDC} {__MENUS__}
  699.  
  700. {$IFC NOT UsingIncludes}
  701.  END.
  702. {$ENDC}
  703.